package com.cheer.util;

import cn.hutool.core.io.FileTypeUtil;
import com.cheer.exception.ServiceException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @author cheer
 */
@Slf4j
public class FileUtil {

    /**
     * 校验文件格式
     *
     * @param file 文件
     * @param ext  文件后缀
     */
    public static void checkFile(MultipartFile file, String ext) {
        if (file == null) {
            throw new ServiceException("上传的文件无效");
        }
        try {
            if (!StringUtils.equals(ext, FileTypeUtil.getType(file.getInputStream(), file.getOriginalFilename()))) {
                throw new ServiceException("上传的文件格式无效，请上传 " + ext + " 文件");
            }
        } catch (IOException e) {
            log.error("上传文件异常：" + e.getMessage(), e);
            throw new ServiceException("上传文件异常");
        }
    }

    /**
     * 存储文件到磁盘
     *
     * @param file     文件
     * @param filePath 存储路径
     */
    public static void saveFile(MultipartFile file, String filePath) {
        try {
            cn.hutool.core.io.FileUtil.mkdir(StringUtils.substringBeforeLast(filePath, File.separator));
            file.transferTo(new File(filePath));
        } catch (IOException e) {
            log.error("拷贝文件异常：" + e.getMessage(), e);
            throw new ServiceException("上传文件异常");
        }
    }



}
